iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0
Modern Web

PixiJS青銅玩家系列 第 7

【LV. 7】PixiJS青銅玩家:前置作業(3)

  • 分享至 

  • xImage
  •  

▉ 前言

這裡將利用教程所提供的"Treasure Hunter Game"來直接學習PixiJS中的語法。"Treasure Hunter Game"的程式碼 ---> Click Here !

▉ 主線任務:前置作業-放好畫布,然後呢?(2)

系統提示:「Beware the barrenness of a busy life.--Socrates」,PixiJS青銅玩家還卡關於前置作業後半段,僅獲得經驗值提昇等級。

▍任務說明

【LV. 6】階段時提到,當我們要把圖片顯示在畫布之前,必須先對圖片做些處理,在【LV. 6】中已完成了第一步驟「創建Sprites」,接著將繼續處理下去。

▍作法

document.body.appendChild(app.view);

loader
    .add("images/treasureHunter.json");
    .load(setUp);

▍分析

[ 已完成 ] 1. 創建Sprites
[ 進行中 ] 2. 將圖片載入到texture cache
[ 待完成 ] 3. 載入圖片、轉換成Texture

  • Step 2. 將圖片載入到texture cache
    我們創建好sprites後,是沒辦法直接使用、直接利用PIXI顯示出來的,因為PIXI是使用WebGL渲染,並在GPU上面執行,所以圖片的格式需要能讓GPU處理。

    而一張可以被GPU處理的圖片(WebGL-ready image),我們稱之為「texture」(texture中文是材質貼圖,又或者可以稱作紋理貼圖)。

    另外,為了可以更快速、更有效率的運行程式,PIXI會利用「texture cache」(紋理緩存)來儲存或引用所有我們Sprites需要的Texture。

    至於將圖片放入Texture Cache的方法,PixiJS 教程中文版提供底下的方法:

    PIXI.utils.TextureCache["images/cat.png"];
    

    但是去官方文件看一下,發現他對於TextureCache幾乎沒什麼內容QQ(那欸安內):

    後來繼續查資料,看了這幾篇文章:
    基本Loader
    [PixiJS - Day-13] PIXI.loaders.Loader
    學JS的心路歷程 Day28 - PixiJS - 基礎(二)

    整理出幾個重點:

    1. 其中有提到在PIXI論壇中,Xerver告知不要使用底下這個方法。而他建議不要使用的方法竟然是PixiJS 教程中文版提供的( ˘•ω•˘ ),並且說明應該使用.loader來將圖片載入texture cache緩存之中。

      PIXI.utils.TextureCache["images/cat.png"];
      //Xerver告知不要使用。
      

      取而代之的應該使用loader語法:

      PIXI.loader.resources[player.img].texture;
      

    2. 這邊回答不要將loader語法與其他方便函數(直接從convenience methods直翻...,不過這裡指的是PIXI.Sprite.fromImage()語法)混在一起使用。

      版主提到使用loader就用loader的值即可(不要混其他的函式),不過如果你不需要預載Texture,而是直接利用url去建立Sprites的話,那可以直接使用PIXI.Sprite.fromImage()語法

      總而言之,若想要把圖片加入Texture Cache之中,最建議的方法就是使用PIXI.loader,也就是接下來要提到的內容。

▉ 結語

今天又是整天課,所以利用中午休息時間趕快處理今日文章,內容就不是很多QQ

總之,今天的部份進入到「 將圖片載入到texture cache」,而他的用意在於先對於Texture做緩存,這樣當Sprites要使用到Textrue時就可以有效率、更快速地使用了。

明天會寫前置作業的最後一個部份!接著就會進入到setUp()的地方。


【註】Texture
中文為材質貼圖,又或者可以稱作紋理貼圖。在電腦圖學中是把儲存在記憶體里的點陣圖包裹到3D彩現物體的表面。紋理貼圖給物體用簡單的方式類比出了複雜的外觀。

圖片來源:https://zh.wikipedia.org/zh-tw/%E6%9D%90%E8%B4%A8%E8%B4%B4%E5%9B%BE

【註】Sprite、Textrue、Image?
在這部份,這3個名詞常常出現,搞到有點不知道他們到底有什麼區別。

首先Sprite跟Texture都是屬於Image的一種。接著Sprite與Texture在不同地方會有不太相同的解釋,而這裡以PIXI來說的話,無論利用單張圖片路徑、tileset圖片或texture atlas構成的圖片,我們把他稱作Sprite,而當這個Sprite變成可以讀入程式中的圖片時,我們就會稱作Textrue。

可以用【LV. 6】曾經出現的圖片做解釋:


參考資料


上一篇
【LV. 6】PixiJS青銅玩家:前置作業(2)
下一篇
【LV. 8】PixiJS青銅玩家:前置作業(4)
系列文
PixiJS青銅玩家30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言